
var oType="view";		/*	存储实时消息类型,  default="view"	*/

var stompClient = null;


(function ($) {

    /*	函数 ： 定义获取URL中的参数值	*/
    $.getUrlParam = function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]); return null;
    }

})(jQuery);


var oUserId=$.getUrlParam("id"); 	/*	获取URL中当前用户的id	*/

/*	函数 ： 确定当前用户的头像	*/
function GetHeadImg(userNum){	/*	userNum表示用户在当前group内为第几个人物	*/
    var img;

    if(userNum == 1)
        img = "img/image_std.png";
    else if(userNum == 2)
        img = "img/image_std2.png";
    else
        img = "img/image_std3.png";

    return img;
}

/*	函数 ： 为当前消息绑定点赞评论按钮的hover事件	*/
function AddMessageHover(owner,id){


    //@功能
    $("#head"+id).click(function(){
        var realName;
        $.ajax({
            type:'post',
            url: 'getUser',
            data:{userId:owner},
            async:false,
            success:function(data){
                realName = data.realname;
            },
            error:function(){
                console.log("failed");
            }

        });

        $("#answerText").val($("#answerText").val()+"@"+realName);
    });

    //消息hover显示评论点赞按钮事件
    $("#message"+id).hover(function(){

        $("#"+id).html('<button id="heart'+id+'" type="button" class="btn btn-default" style="height: 28px;"><span class="glyphicon glyphicon-heart"></span></button>'
            +'<button id="question'+id+'" type="button" class="btn btn-default" ><span class="glyphicon glyphicon-question-sign">'
            +'</span></button>');


        if(owner != oUserId){			//如果该消息不是当前用户发送的，则绑定点赞事件

            //显示该消息是否被当前用户点赞
            $.ajax({
                type:'post',
                url: 'getRecord',
                data:{
                    chatId:id,
                    userId:oUserId},
                async:false,
                success:function(data){					/*此处获取到的是一个data对象*/

                    var thumb = data.thumbsUp;
                    if(thumb){
                        $("#heart"+id).attr("disabled",true);
                        $("#heart"+id).css("color","#d9534f");
                    }
                    else{
                        $("#heart"+id).attr("disabled",false);
                    }
                },
                error:function(){
                    console.log("failed");
                }

            });


            //点赞
            $("#heart"+id).click(function(){
                $(this).css("color","#d9534f");

                /*	当前消息点赞+1	*/
                $.ajax({
                    type:'post',
                    url: "thumbsUp",
                    data:{chatId:id},
                    async:false,
                    success:function(data){

                    },
                    error:function(){
                        console.log("failed");
                    }
                });

                /*	当前消息已点赞，存入记录	*/
                $.ajax({
                    type:'post',
                    url:+"saveThumbs",
                    data:{
                        chatId:id,
                        userId:oUserId},
                    async:false,
                    success:function(data){

                    },
                    error:function(){
                        console.log("failed");
                    }
                });

                //一个人对一条消息只能点赞一次
                $(this).attr("disabled",true);

            });//点赞

        }//if

        else{ 			// 如果当前用户就是该消息的发出者，则显示该消息被点赞的次数

            var thumbsNumber;
            //用户不能对自己发出的消息点赞
            $("#heart"+id).attr("disabled",true);
            /*	获取当前消息的点赞数	*/
            $.ajax({
                type:'post',
                url: "getThumbsNum",
                data:{chatId:id},
                async:false,
                success:function(data){

                    if(data.likeNum>0){$("#heart"+id).css("color","#d9534f");}
                    $("#heart"+id).append('<span style="display:block;font-size:small;margin-top:-14px;margin-left:23px;">'+data.likeNum+'</span>');

                },
                error:function(){
                    console.log("failed");
                }
            });


        }

        //评论
        $("#question"+id).click(function(){

            var content=""; //存储评论区显示效果： 已评{不显示输入框} / 未评{显示输入框}

            /* 读取该条信息的所有评论  */
            $.ajax({
                type:'post',
                url: "getComments",
                data:{chatId:id},
                async:false,
                success:function(data){

                    for(var i=0;i<data.length;++i){
                        if(data[i].commentContent!=null){
                            var name;

                            $.ajax({
                                type:'post',
                                url:'getUser',
                                data:{userId:data[i].userId},
                                async:false,
                                success:function(data){
                                    name = data.realname;
                                },
                                error:function(){
                                    console.log("failed");
                                }

                            });

                            content+='<p>&nbsp;'+name+'<strong>&nbsp;:&nbsp;</strong>'+data[i].commentContent+'</p>';
                        }
                    }
                },
                error:function(){
                    console.log("failed");
                }
            });

            /*	判断:是否已评论来显示评论输入框	*/
            $.ajax({
                type:'post',
                url: 'getRecord',
                data:{
                    chatId:id,
                    userId:oUserId},
                async:false,
                success:function(data){
                    if(!data.asked){	//未评论 ：显示评论框
                        content+='<div id="commentGroup"'+id+' class="input-group" style="margin-top:8px;">'
                            +'<input id="addComment'+id+'" type="text" class="form-control" placeholder="添加你的评论">'
                            +'<div class="input-group-btn" >'
                            +'<button id="sendComment'+id+'" type="button" class="btn btn-danger">评</button>'
                            +'</div></div>';

                        //??????????????????????????????????	无效		????????????????
                        console.log(owner == oUserId);
                        if(owner == oUserId){
                            $("#commentGroup"+id).attr("disabled",true);
                        }
                        //??????????????????????????????????????????????????????????????

                    }
                    //否则不显示
                },
                error:function(){
                    console.log("failed");
                }
            });



            /* 先添加html代码，里面的ID才能实现 */
            $("#comments"+id).html(content);

            //为发表评论绑定事件
            $("#sendComment"+id).click(function(){

                /*	当前消息已点赞评论，存入记录	*/
                $.ajax({
                    type:'post',
                    url:"saveComment",
                    data:{
                        chatId:id,
                        userId:oUserId,
                        commentContent:$("#addComment"+id).val()},
                    async:false,
                    success:function(data){

                    },
                    error:function(){
                        console.log("failed");
                    }
                });

                //*********************************		此处代码冗余		*************************************
                content="";		//清空content
                /* 读取该条信息的所有评论  */
                $.ajax({
                    type:'post',
                    url:"getComments",
                    data:{chatId:id},
                    async:false,
                    success:function(data){

                        for(var i=0;i<data.length;++i){
                            if(data[i].commentContent!=null){

                                var name;

                                $.ajax({
                                    type:'post',
                                    url:'getUser',
                                    data:{userId:data[i].userId},
                                    async:false,
                                    success:function(data){
                                        name = data.realname;
                                    },
                                    error:function(){
                                        console.log("failed");
                                    }

                                });

                                content+='<p>&nbsp;'+name+'<strong>&nbsp;:&nbsp;</strong>'+data[i].commentContent+'</p>';
                            }
                        }
                    },
                    error:function(){
                        console.log("failed");
                    }
                });

                $("#comments"+id).html(content);
                //************************************************************************************************


                //已发表评论，输入框收起
                $("#commentGroup"+id).css("display","none");

            });//发表评论


            $("#comments"+id).css("display","block");

            //保证最后一行的评论框显示在当前视野内
            //$("#talkingContent").scrollTop($("#talkingContent").scrollTop() + $("#comments"+id).offset().top - $("#talkingContent").offset().top);
        });//评论


        //鼠标离开评论框时，评论框收起
        $("#comments"+id).hover(function(){
            //null
        },function(){

            $(this).css("display","none");

            if($("#addComment"+id).Focused){
                $(this).css("display","block");
            }
        });

    },function(){$("#"+id).html("");}	);//hover事件

}




/*	函数 ： 显示当前ChatRoom里的所有消息	*/
function ShowAllComments(chatRoomId){
    var chat;
    var img;

    $.ajax({
        type:'post',
        url:'getMessages',
        data:{chatRoomId:1},
        async:false,
        success:function(data){					/*此处获取到的是一个data对象*/
            chat = data;


        },
        error:function(){
            console.log("failed");
        }

    });

    for(var i=0;i<chat.length;i++){

        /*	确定当前消息发表着的头像	*/
        $.ajax({
            type:'post',
            url:'getUser',
            data:{userId:chat[i].owner},
            async:false,
            success:function(data){

                img = GetHeadImg(data.theNumber);
            },
            error:function(){
                console.log("failed");
            }

        });

        $("#theme").append('<div  class="student_content" style="margin-top:10px;margin-left:3px;font-size:16px;">'
            +'<img id="head'+chat[i].chatId+'" src='+img+' style="cursor:pointer;width:45px;margin-right:20px;">'
            +'<div id="message'+chat[i].chatId+'"  style="display:inline;><span  class="talkContent">'+chat[i].chatContent+'</span>'
            +'<div id="'+chat[i].chatId+'" class="btn-group" role="group" aria-label="..." style="margin-left:10px;margin-bottom:9px;height:20px;"></div></div>'
            +'<div class="comments" id="comments'+chat[i].chatId+'" ></div>'
            +'</div>');

        $("#talkingContent").scrollTop($("#talkingContent").scrollTop() + $("#message"+chat[i].chatId).offset().top - $("#talkingContent").offset().top);

        AddMessageHover(chat[i].owner,chat[i].chatId);			//显示所有当前聊天室的聊天信息

    }//for


}


/*		显示当前消息		*/
function ShowCurrentMessage(message){

    //获取该消息对应用户的头像
    var img;
    $.ajax({
        type:'post',
        url:'getUser',
        data:{userId:message.owner},
        async:false,
        success:function(data){

            img = GetHeadImg(data.theNumber);
        },
        error:function(){
            console.log("failed");
        }

    });

    $("#theme").append('<div  class="student_content" style="margin-top:10px;margin-left:3px;font-size:16px;">'
        +'<img id="head'+message.chatId+'" src='+img+' style="cursor:pointer;width:45px;margin-right:20px;">'
        +'<div id="message'+message.chatId+'" style="display:inline;"><span  class="talkContent">'+message.chatContent+'</span>'
        +'<div id="'+message.chatId+'" class="btn-group" role="group" aria-label="..." style="margin-left:10px;margin-bottom:9px;height:20px;"></div></div>'
        +'<div class="comments" id="comments'+message.chatId+'" ></div>'
        +'</div>');

    $("#talkingContent").scrollTop($("#talkingContent").scrollTop() + $("#message"+message.chatId).offset().top - $("#talkingContent").offset().top);

    AddMessageHover(message.owner,message.chatId);
}


//建立WebSocket连接
function connect() {

    var socket = new SockJS("http://localhost:8080/websocket");
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {

        console.log('Connected: ' + frame);

        //订阅群聊消息
        stompClient.subscribe('/chat/multi', function (result) {
            ShowCurrentMessage(JSON.parse(result.body));
        });



    });
}

//断开WebSocket连接
function disconnect() {
    if (stompClient !== null) {
        stompClient.disconnect();
    }

    console.log("Disconnected");
}
$(function(){



    $("#ask").click(function(){
        $("#menu").html('Ask&nbsp;<span class="caret">');
        oType="ask";
    });
    $("#view").click(function(){
        $("#menu").html('View&nbsp;<span class="caret">');
        oType="view";
    });
    $("#resource").click(function(){
        $("#menu").html('Resource&nbsp;<span class="caret">');
        oType="resource";
    });


});

function StartTalking(){
    $("#start").hide();
    $("#answerText").attr("disabled",false);
    $("#send").attr("disabled",false);
    $(".student_content").css("display","block");
    $("#quit").css("display","inline");
    $("#menu").attr("disabled",false);

    ShowAllComments(1);		//	1:聊天室ID

    connect();


}

function StopTalking(){
    $("#start").show();
    $("#answerText").attr("disabled",true);

    disconnect();
}

//点击发送信息
function SendAnswer(){

    var chat;

    /*	存储当前消息	*/
    $.ajax({
        type:'post',
        url: 'groupChat',
        data:{
            userId:oUserId,
            chatContent:$("#answerText").val(),
            type:oType,
        },
        async:false,
        success:function(data){					/*此处获取到的是一个data对象*/

            chat = data;		//将数据赋值给该函数的局部变量
        },
        error:function(){
            console.log("failed");
        }

    });

    /*	生成点赞评论记录	*/
    $.ajax({
        type:'post',
        url: 'createRecord',
        data:{
            chatId:chat.chatId,
            userId:oUserId},
        async:false,
        success:function(data){
            //data是该消息对应的所有点赞评论记录
        },
        error:function(){
            console.log("failed");
        }

    });


    //发送当前消息给WebSocket
    stompClient.send("/app/web/chat", {chatId:chat.chatId});

    /*	清空input里的内容*/
    $("#answerText").val("");

}

//点击回撤，实现发送消息的功能：存在一定Bug，评论时误点回车也会发送消息，而且是空消息，而不能实现评论
$(document).keyup(function(event){
    if(event.keyCode ==13){
        $("#send").trigger("click");
    }
});



